home *** CD-ROM | disk | FTP | other *** search
- /************************************************************
- * Program: RMENU Menu Interpreter
- * Module: rcmenu.h -- Interpreter Module header file
- * Written by: Leor Zolman, 7/91
- ************************************************************/
-
- #include <curses.h>
-
- #define min(x,y) ((x) < (y) ? (x) : (y))
-
-
- /********************* Curses Configuration *****************/
-
- #ifndef KEY_UP
- # define OLD_CURSES 1 /* no KEY_UP definition: old Curses */
- #else
- # define OLD_CURSES 0 /* KEY_UP defined: new Curses */
- #endif
-
- #if OLD_CURSES /* under old Curses, emulate some */
- # define INIT_FAIL ERR /* of new Curses' features */
- # ifdef CTRL
- # undef CTRL
- # endif
- # define CTRL(x) ((x) & 037)
- # define KEY_UP CTRL('P')
- # define KEY_DOWN CTRL('N')
- # define KEY_LEFT CTRL('B')
- # define KEY_RIGHT CTRL('F')
- # define beep() write(1, "\007", 1);
- # define keypad(a,b)
- #else
- # define INIT_FAIL NULL
- #endif
-
- #if XENIX
- #define resetty reset_tty
- #endif
-
- #if DOS /* Color definitions for DOS: */
- #define DOS_FCOLOR A_CYAN /* Normal DOS foreground color */
- #define DOS_BCOLOR A_BLACK /* Normal DOS background color */
-
- #define M_FCOLOR A_YELLOW /* Normal Menu foregnound color */
- #define M_BCOLOR A_BLUE /* Normal Menu background color */
-
- #define MREV_FCOLOR A_BLUE /* Reverse Menu foregnd color */
- #define MREV_BCOLOR A_WHITE /* Reverse Menu backgnd color */
- #endif
-
-
- /*************** Default menu control options ***************/
-
- #define ON_ERROR 50 /* prompt option */
-
- #define SHELL_PROMPT FALSE /* Prompt for shell escape? */
-
- #define DEF_PRECLEAR YES
- #define DEF_POSTCLEAR NO
- #define DEF_PROMPT ON_ERROR /* YES, NO or ON_ERROR */
- #define DEF_ESCAPE YES
-
- #define DEF_COLUMNS 1
- #define DEF_SPACING 2
-
-
- /************** Screen layout characteristics ***************/
-
- #define MAX_IROWS 18 /* # of item rows MUST BE EVEN) */
- #define HOME_Y 2 /* upper left y for 1st Item */
- #define HOME_X 1 /* upper left x for 1st Item */
- #define SCREEN_COLS 80 /* # of columns on the screen */
-
- #define TITLE_ROW 0 /* row on screen for menu title */
- #define HELP_ROW0 20 /* row that "HELP" sign goes on */
- #define HELP_COL0 36 /* column that "HELP" sign goes */
- #define HELP_ROW 21 /* row on screen for HELP text */
- #define PROMPT_ROW 23 /* row for prompt text */
-
-
- /** System/hardware-dependent Key codes and line numbers: ***/
-
- #if DOS
- # define LAST_ROW 24 /* last row of screen */
- # define MAX_PATH_STACK 5 /* maximum nested submenus */
- #else
- # define LAST_ROW 23 /* last row of screen */
- #endif
-
- #define ERR_ROW (PROMPT_ROW - 1)
-
-
- /************** Shell Escape Control Parameters *************/
-
- #define SH_PROMPT_STR \
- " Press Enter for sub-shell, ESC to abort\
- ('exit' returns from shell): "
-
- #define MENU_OPTS \
- " Space/arrows/item#=Choose ENTER=Run\
- 'e'=Previous 'x'=Exit "
-
- #define MENU_SHELL " !=shell "
- #define MENU_PROMPT " -> "
-
- #ifndef DOS
- # define SHELL_ESC "PS1=\"\n('exit' returns to\
- Menu)\n$ \"; export PS1; exec sh -"
- #endif
-
-
- /********** Other Miscellaneous constants: *****************/
-
- #define ESC 033 /* ESC key */
- #define EXITALL 2 /* "super exit" code */
-
- #define KEY_RUN '\r' /* raw-mode Enter key */
- #define KEY_SHOW 'a' /* show action text for an item */
- #define K_DIRECT (-2) /* values returned by get_cmd() */
- #define K_EXIT (-3)
- #define K_EXITALL (-4)
- #define K_SHELL (-5)
- #define K_UNKNOWN (-6)
- #define K_VERSION (-7) /* report version number */
-
- #define STANDOUT 1 /* video mode codes passed to */
- #define NORMAL 2 /* the draw_item() function */
-
-
- /********************* Global data **************************/
-
- extern struct levels {
- int n_menus; /* # currently active */
- int max_menus; /* highest ever active */
- struct menu2 {
- int most_items; /* most Items allocated */
- MENU Menu; /* the header structure */
- ITEM *Items[MAX_ITEMS]; /* the actual items */
-
- int field_len; /* length of item field */
- struct coord { /* coords of each item */
- int ypos, xpos;
- int spaces_needed; /* # of spaces to fill */
- } coords[MAX_ITEMS];
-
- } *Menus[MAX_MENUS];
- } LMenus[MAX_NEST];
-
- typedef struct levels LEVELS;
- typedef struct menu2 MENU2;
- typedef struct coord COORDS;
-
- extern int nestlev; /* current nesting level */
- extern int echox, echoy; /* Location of item # echo area */
- extern int debug; /* true to display sys commands */
-
- extern char SysShell[80]; /* System Command Interpreter */
-
- /********************* Prototypes: **************************/
-
- #if __STDC__ || XENIX /* Standard C, supporting prototypes: */
-
- void init_win(void);
- void close_win(void);
- void pre_shell(void);
- void post_shell(void);
- void tty_curses(void);
- void tty_shell(void);
- void push_path(void);
- void pop_path(void);
-
- int ld_menu(char *);
- void placement(MENU *);
- void free_menus(void);
- int do_menu(char *, char *);
- int sub_menu(int, char *);
- void draw_menu(MENU2 *, int);
- int get_cmd(int, int, int *);
- int put_msg(int, char *, ...);
- int do_item(MENU2 *, int, char *);
- void draw_item(MENU2 *, int, int, int);
- int fatal(char *, ...);
- void do_cmnd(ITEM *, char *);
- int do_emenu(ITEM *, char *);
- int system0(char *);
- char * make_path( char *, char *);
- char * make_cmd( char *, char *);
- void show_item(MENU2 *, int, char *);
- void show_cmnd(ITEM *, char *);
- void hlight_on(void);
- void hlight_end(void);
-
- #else /* K&R C, minimal "prototypes:" */
-
- int init_win();
- int close_win();
- int pre_shell();
- int post_shell();
- int tty_curses();
- int tty_shell();
- int push_path();
- int pop_path();
-
- int ld_menu();
- int placement();
- int free_menus();
- int do_menu();
- int sub_menu();
- int draw_menu();
- int get_cmd();
- int put_msg();
- int do_item();
- int draw_item();
- int fatal();
- int do_cmnd();
- int do_emenu();
- int system0();
- char * make_path();
- char * make_cmd();
- int show_item();
- int show_cmnd();
- int hlight_on();
- int hlight_end();
- #endif
-